The present disclosure generally relates to the field of electronics. More particularly, an embodiment of the invention relates to techniques for addressing device resources in variable page size environments.
Input/output (I/O) virtualization is a technology being developed to ensure that I/O devices function properly in a virtualized environment. For example, when an I/O device issues a direct memory access (DMA) request in a virtualized environment (e.g., where there may be more than one operating system (OS) active in the system), a translation may be performed on the address specified by the DMA request to ensure that the DMA operation and resulting effects are committed to the portion of the memory space that corresponds to the given I/O device.
Moreover, to limit data corruption, memory space utilized by different agents such as software applications or operating systems may be divided into predefined portions (also referred to as “pages”) and each of the agents may only be allowed to access data within the boundaries defined for corresponding pages. However, the page size used by a system memory shared amongst various agents (such as I/O devices, software applications, or operating systems I/O devices) may be reconfigured over time, e.g., to improve performance or allow access to additional memory space. When the page size of the system memory is modified, an I/O device may end up having a different page size than the system memory. As a result, changes in the system memory page size may render some I/O devices inoperable or cause complications.